#ifndef _DERIVADORES_H_
#define _DERIVADORES_H_

#include "AB.h"

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarVariable(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarConstante(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarSuma(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarResta(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarProducto(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarDivision(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarPotencia(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarSeno(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarCoseno(const TAB* origen, TAB* destino);

/*PRE: Recibe un arbol origen creado y no vacio y otro arbol destino no creado.
  POS: Devuelve la derivada del arbol origen en el arbol destino. Devuelve 1 si deriva, o 0 si ocurre algun error*/
int DerivarLogaritmo(const TAB* origen, TAB* destino);

#endif
